{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "from subprocess import check_output\n",
    "#check_output([\"ls\",])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_train=pd.read_csv('D:/dataset/train.csv')\n",
    "df_songs=pd.read_csv('D:/dataset/songs.csv')\n",
    "df_songs_extra=pd.read_csv('D:/dataset/song_extra_info.csv')\n",
    "df_members=pd.read_csv('D:/dataset/members.csv',parse_dates=\n",
    "                       ['registration_init_time','expiration_date'])\n",
    "\n",
    "df_test=pd.read_csv('D:/dataset/test.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of common users in both the datasets： 21483\n"
     ]
    }
   ],
   "source": [
    "print('Number of common users in both the datasets：',len(set.intersection(\n",
    "            set(df_train['msno']),set(df_test['msno']))))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练集和测试集中 共有的用户： 21483\n",
      "训练集合测试集中都出现的歌曲： 164880\n",
      "训练集中的歌曲数量： 359966\n",
      "测试集中的歌曲数量： 224753\n",
      "训练集中的用户数量： 30755\n",
      "测试集中的用户数量： 25131\n"
     ]
    }
   ],
   "source": [
    "print('训练集和测试集中 共有的用户：',len(set.intersection(\n",
    "    set(df_train['msno']),set(df_test['msno'])\n",
    ")))\n",
    "\n",
    "print('训练集合测试集中都出现的歌曲：',len(set.intersection(\n",
    "    set(df_train['song_id']),set(df_test['song_id'])\n",
    ")))\n",
    "\n",
    "print('训练集中的歌曲数量：',df_train['song_id'].unique().shape[0])\n",
    "print('测试集中的歌曲数量：',df_test['song_id'].unique().shape[0])\n",
    "\n",
    "print('训练集中的用户数量：',df_train['msno'].unique().shape[0])\n",
    "print('测试集中的用户数量：',df_test['msno'].unique().shape[0])\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x11cf0e722e8>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x576 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#查看训练集中 订阅与非订阅用户比例\n",
    "plt.figure(figsize=(12,8))\n",
    "sns.countplot(df_train['target'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "                                           msno  \\\n",
      "0  FGtllVqz18RPiwJj/edr2gV78zirAiY/9SmYvia+kCg=   \n",
      "1  Xumu+NIjS6QYVxDS4/t3SawvJ7viT9hPKXmf0RtLNx8=   \n",
      "2  Xumu+NIjS6QYVxDS4/t3SawvJ7viT9hPKXmf0RtLNx8=   \n",
      "3  Xumu+NIjS6QYVxDS4/t3SawvJ7viT9hPKXmf0RtLNx8=   \n",
      "4  FGtllVqz18RPiwJj/edr2gV78zirAiY/9SmYvia+kCg=   \n",
      "\n",
      "                                        song_id source_system_tab  \\\n",
      "0  BBzumQNXUHKdEBOB7mAJuzok+IJA1c2Ryg/yzTF6tik=           explore   \n",
      "1  bhp/MpSNoqoxOIB+/l8WPqu6jldth4DIpCm3ayXnJqM=        my library   \n",
      "2  JNWfrrC7zNN7BdMpsISKa4Mw+xVJYNnxXh3/Epw7QgY=        my library   \n",
      "3  2A87tzfnJTSWqD7gIZHisolhe4DMdzkbd6LzO1KHjNs=        my library   \n",
      "4  3qm6XTZ6MOCU11x8FIVbAGH5l5uMkT3/ZalWG1oo2Gc=           explore   \n",
      "\n",
      "    source_screen_name      source_type  target  song_length genre_ids  \\\n",
      "0              Explore  online-playlist       1     206471.0       359   \n",
      "1  Local playlist more   local-playlist       1     284584.0      1259   \n",
      "2  Local playlist more   local-playlist       1     225396.0      1259   \n",
      "3  Local playlist more   local-playlist       1     255512.0      1019   \n",
      "4              Explore  online-playlist       1     187802.0      1011   \n",
      "\n",
      "       artist_name                                 composer lyricist  \\\n",
      "0         Bastille                     Dan Smith| Mark Crew      NaN   \n",
      "1  Various Artists                                      NaN      NaN   \n",
      "2              Nas     N. Jones、W. Adams、J. Lordan、D. Ingle      NaN   \n",
      "3         Soundway                            Kwadwo Donkoh      NaN   \n",
      "4      Brett Young  Brett Young| Kelly Archer| Justin Ebach      NaN   \n",
      "\n",
      "   language                                     name          isrc  \n",
      "0      52.0                               Good Grief  GBUM71602854  \n",
      "1      52.0                       Lords of Cardboard  US3C69910183  \n",
      "2      52.0  Hip Hop Is Dead(Album Version (Edited))  USUM70618761  \n",
      "3      -1.0                             Disco Africa  GBUQH1000063  \n",
      "4      52.0                        Sleep Without You  QM3E21606003  \n"
     ]
    }
   ],
   "source": [
    "#将歌曲合并到训练集  合并原则:song_id\n",
    "df_train=df_train.merge(df_songs,on='song_id',how='left')\n",
    "#将歌曲额外信息合并到训练集 合并原则：song_id\n",
    "df_train=df_train.merge(df_songs_extra,on='song_id',how='left')\n",
    "print(df_train.head())\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x11c80d32128>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAvAAAAJRCAYAAAAj5oMxAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3Xu0JFV9L/Dvj4eBCMjbKAMOUZLIQ1EGxGeIugDJFTBC1BsDCIb4StBcvZeYXFRMVvRqrglRJKgIRKIxGgIxRkQCagTFQZFBiEIUYYCLvESUGAX2/aPrQDNzzsyZ4Zzp2TOfz1q9TvXuXbV37VNd/e3q6upqrQUAAOjDBpPuAAAAMHsCPAAAdESABwCAjgjwAADQEQEeAAA6IsADAEBHBHgAAOiIAA8AAB0R4AEAoCMbTboDa7ttt922LVy4cNLdAABgHXfZZZfd1lrbbmX1BPiVWLhwYRYvXjzpbgAAsI6rqu/Npp5TaAAAoCMCPAAAdESABwCAjjgHHgCAdcLPfvazLF26ND/5yU8m3ZUV2mSTTbJgwYJsvPHGqzW/AA8AwDph6dKl2XzzzbNw4cJU1aS7M63WWm6//fYsXbo0O++882otwyk0AACsE37yk59km222WWvDe5JUVbbZZpuH9SmBAA8AwDpjbQ7vUx5uHwV4AADoiAAPAMA67wc/+EFOPvnkeW/noosuysUXXzyvbQjwAACs81Y1wLfWcv/9969yOwI8AADMgeOPPz7/8R//kT333DNveMMb8rznPS9PfepTs8cee+Scc85Jklx33XV54hOfmNe85jV56lOfmhtuuCEf+tCH8ku/9EvZb7/98ju/8zt53etelyS59dZb8+IXvzh777139t5773zpS1/Kddddl1NOOSXvec97sueee+aLX/zivKyLy0gCALDOe8c73pErr7wyl19+ee69997cc8892WKLLXLbbbdl3333zcEHH5wk+da3vpUPf/jDOfnkk3PTTTfl7W9/e772ta9l8803z3Of+9w8+clPTpIcd9xxecMb3pBnPetZuf7663PAAQfk6quvzqte9apsttlmeeMb3zhv6yLAAwCwXmmt5c1vfnO+8IUvZIMNNsiNN96YW265JUnyuMc9Lvvuu2+S5NJLL82v/uqvZuutt06SHH744fn2t7+dJPnc5z6Xq6666oFl/vCHP8zdd9+9RvovwAMAsF4566yzcuutt+ayyy7LxhtvnIULFz5wXfZHPvKRD9Rrrc24jPvvvz+XXHJJNt1003nv77KcAw8AwDpv8803f+AI+V133ZXtt98+G2+8cS688MJ873vfm3aeffbZJ5///Odz55135t57780nP/nJBx7bf//98973vveB+5dffvly7cwXAR4AgHXeNttsk2c+85nZfffdc/nll2fx4sVZtGhRzjrrrPzKr/zKtPPssMMOefOb35ynPe1pef7zn59dd901j3rUo5IkJ510UhYvXpwnPelJ2XXXXXPKKackSV74whfm7LPPntcvsdaKPhogWbRoUVu8ePGkuwEAwEpcffXVeeITnziny/zRj36UzTbbLPfee29e9KIX5eijj86LXvSih73c6fpaVZe11hatbF5H4AEAYAZvfetbs+eee2b33XfPzjvvnEMPPXTSXfIlVgAAmMm73/3uSXdhOY7AAwBARwR4AADoiAAPAAAdEeABAKAjvsQKAMA6aa83nTmny7vsXUfMqt5nPvOZHHfccbnvvvvyyle+Mscff/yc9kOAh2lcf+Iek+5CdjphyaS7AACsovvuuy+vfe1rc/7552fBggXZe++9c/DBB2fXXXedszacQgMAAHPk0ksvzROe8IT84i/+Yh7xiEfkpS99ac4555w5bUOABwCAOXLjjTdmxx13fOD+ggULcuONN85pGwI8AADMkdbacmVVNadtCPAAADBHFixYkBtuuOGB+0uXLs1jH/vYOW1DgAcAgDmy995755prrsl3v/vd/PSnP83HPvaxHHzwwXPahqvQAACwTprtZR/n0kYbbZT3vve9OeCAA3Lffffl6KOPzm677Ta3bczp0gAAYD130EEH5aCDDpq35TuFBgAAOiLAAwBARwR4AADoiAAPAAAdEeABAKAjAjwAAHTEZSQBAFgnXX/iHnO6vJ1OWDKrekcffXQ+9alPZfvtt8+VV145p31IHIEHAIA5ddRRR+Uzn/nMvC1fgAcAgDn0nOc8J1tvvfW8LV+ABwCAjgjwAADQEQEeAAA6IsADAEBHXEYSAIB10mwv+zjXXvayl+Wiiy7KbbfdlgULFuRtb3tbjjnmmDlbvgAPAABz6KMf/ei8Lt8pNAAA0BEBHgAAOiLAAwCwzmitTboLK/Vw+yjAAwCwTthk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\n",
      "text/plain": [
       "<Figure size 864x720 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#条状图展示事件触发类型\n",
    "plt.figure(figsize=(12,10))\n",
    "sns.countplot(df_train['source_system_tab'],hue=df_train['target'])\n",
    "#plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[Text(0,0,'online-playlist'),\n",
       " Text(0,0,'local-playlist'),\n",
       " Text(0,0,'local-library'),\n",
       " Text(0,0,'top-hits-for-artist'),\n",
       " Text(0,0,'album'),\n",
       " Text(0,0,'song-based-playlist'),\n",
       " Text(0,0,'radio'),\n",
       " Text(0,0,'song'),\n",
       " Text(0,0,'listen-with'),\n",
       " Text(0,0,'artist'),\n",
       " Text(0,0,'topic-article-playlist'),\n",
       " Text(0,0,'my-daily-playlist')]"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x720 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#查看 音乐入口类型\n",
    "plt.figure(figsize=(12,10))\n",
    "g=sns.countplot(df_train['source_type'],hue=df_train['target'])\n",
    "locs,labels=plt.xticks()\n",
    "g.set_xticklabels(labels,rotation=45)\n",
    "#plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "#去掉训练集中，song_length为缺失值的项\n",
    "df_train.dropna(subset=['song_length'],inplace=True)\n",
    "df_train.dropna(subset=['language'],inplace=True)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      " 3.0     4044643\n",
      " 52.0    1864789\n",
      " 31.0     656623\n",
      "-1.0      308752\n",
      " 17.0     245136\n",
      " 10.0     171904\n",
      " 24.0      78621\n",
      " 59.0       4193\n",
      " 45.0       2397\n",
      " 38.0        210\n",
      "Name: language, dtype: int64\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x11cf097f240>"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAvAAAAJQCAYAAADoulCUAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3Xu0ZVV9J/rvTx5iC8irMEphCiNGEbWEArltYozYvDoBjJKGkYSKkBAVc43deoPmDjEY7zBtDN22rzYBgTQBbQ0NcaCkgq88VCiw5CEiJSIU0FA8RAytpnDeP/YqanM4p+pQnEfNU5/PGHvstX9rrrXmmnXOrm+tmnvtaq0FAADow5PmuwMAAMD0CfAAANARAR4AADoiwAMAQEcEeAAA6IgADwAAHRHgAQCgIwI8AAB0RIAHAICObDvfHdjS7bHHHm3JkiXz3Q0AABa4q6666p7W2qJNtRPgN2HJkiVZuXLlfHcDAIAFrqq+N512ptAAAEBHBHgAAOiIAA8AAB0xBx4AgAXjX//1X7NmzZr86Ec/mu+uTGmHHXbI4sWLs912223W9gI8AAALxpo1a7LTTjtlyZIlqar57s5jtNZy7733Zs2aNdlnn302ax+m0AAAsGD86Ec/yu67775FhvckqarsvvvuT+h/CAR4AAAWlC01vK/3RPsnwAMAQEcEeAAAFrzvf//7+fCHPzzrx/niF7+Yf/7nf57VYwjwAAAseI83wLfW8tOf/vRxH0eABwCAGXDaaaflO9/5TpYuXZq3vOUtOfTQQ3PAAQfkhS98YS6++OIkyS233JLnP//5eeMb35gDDjggt912W84666w897nPzSte8Yr87u/+bt70pjclSdauXZvXvOY1Oeigg3LQQQfln/7pn3LLLbfkox/9aM4888wsXbo0//AP/zAr5+I2kgAALHjvfe97c91112XVqlVZt25dHnrooey888655557csghh+Too49Oktx44435+Mc/ng9/+MO544478u53vztXX311dtppp7zyla/Mi1/84iTJm9/85rzlLW/JL/zCL+TWW2/N4YcfnhtuuCGvf/3rs+OOO+atb33rrJ2LAA8AwFaltZZ3vOMd+fKXv5wnPelJuf3223PXXXclSX72Z382hxxySJLkiiuuyC/90i9lt912S5Icd9xx+fa3v50k+fu///t885vffGSfP/jBD/Lggw/OSf8FeAAAtirnn39+1q5dm6uuuirbbbddlixZ8sh92Z/61Kc+0q61NuU+fvrTn+YrX/lKnvKUp8x6fycyBx4AgAVvp512euQK+QMPPJA999wz2223Xb7whS/ke9/73qTbHHzwwfnSl76U+++/P+vWrcunP/3pR9Yddthh+eAHP/jI61WrVj3mOLNFgAcAYMHbfffd87KXvSz7779/Vq1alZUrV2bZsmU5//zz87znPW/Sbfbaa6+84x3vyEtf+tK86lWvyn777ZenPe1pSZIPfOADWblyZV70ohdlv/32y0c/+tEkya/+6q/moosumtUPsdbG/muAZNmyZW3lypXz3Q0AAKbhhhtuyPOf//wZ298Pf/jD7Ljjjlm3bl1e/epX56STTsqrX/3qJ7zfyfpZVVe11pZtaltX4AEAYArvete7snTp0uy///7ZZ599cuyxx853l3yIFQAApvJnf/Zn892Fx3AFHgAAOiLAAwBARwR4AADoiAAPAAAd8SFWAAAWrAPfdt6M7u+q9524yTaf+9zn8uY3vzkPP/xwfud3fiennXbajPZBgKc7t57xwjk71rPeee2cHQsA6N/DDz+cU089NStWrMjixYtz0EEH5eijj85+++03Y8cwhQYAAGbIFVdckec85zl59rOfne233z7HH398Lr744hk9hgAPAAAz5Pbbb8/ee+/9yOvFixfn9ttvn9FjCPAAADBDWmuPqVXVjB5DgAcAgBmyePHi3HbbbY+8XrNmTZ75zGfO6DEEeAAAmCEHHXRQbrrppnz3u9/NT37yk1x44YU5+uijZ/QY7kIDAMCCNZ3bPs6kbbfdNh/84Adz+OGH5+GHH85JJ52UF7zgBTN7jBndGwAAbOWOOuqoHHXUUbO2f1NoAACgIwI8AAB0RIAHAICOCPAAANARAR4AADoiwAMAQEfcRhIAgAXr1jNeOKP7e9Y7r91km5NOOimf+cxnsueee+a6666b0eMnrsADAMCM+u3f/u187nOfm7X9C/AAADCDXv7yl2e33Xabtf0L8AAA0BEBHgAAOiLAAwBARwR4AADoiNtIAgCwYE3nto8z7YQTTsgXv/jF3HPPPVm8eHH++I//OCeffPKM7V+ABwCAGXTBBRfM6v5NoQEAgI4I8AAA0BEBHgCABaW1Nt9d2Kgn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\n",
      "text/plain": [
       "<Figure size 864x720 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#将触发事件、播放音乐入口的类型改为category\n",
    "df_train['source_system_tab']=df_train['source_system_tab'].astype('category')\n",
    "df_train['source_type']=df_train['source_type'].astype('category')\n",
    "\n",
    "#查看语言类型\n",
    "print(df_train['language'].value_counts())\n",
    "\n",
    "plt.figure(figsize=(12,10))\n",
    "sns.countplot(df_train['language'],hue=df_train['target'])\n",
    "#plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(-1, 100)"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1008x864 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "#将用户的信息合并到训练集\n",
    "df_train=df_train.merge(df_members,on='msno',how='left')\n",
    "\n",
    "plt.figure(figsize=(14,12))\n",
    "df_train['bd'].value_counts().plot.bar()\n",
    "plt.xlim([-1,100])\n",
    "#plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "年龄小于0的样本 195\n"
     ]
    }
   ],
   "source": [
    "\n",
    "#从柱状图中可以看出大约40%的用户年龄为0，\n",
    "#查看年龄小于0的用户\n",
    "print('年龄小于0的样本',len(df_train.query('bd<0')))\n",
    "\n",
    "#去掉年龄小于0的样本\n",
    "df_train=df_train.query('bd>=0')#195\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "年领大于100的样本有多少： 6508\n",
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Int64Index: 4429227 entries, 1 to 7377263\n",
      "Data columns (total 20 columns):\n",
      "msno                      object\n",
      "song_id                   object\n",
      "source_system_tab         category\n",
      "source_screen_name        object\n",
      "source_type               category\n",
      "target                    int64\n",
      "song_length               float64\n",
      "genre_ids                 object\n",
      "artist_name               object\n",
      "composer                  object\n",
      "lyricist                  object\n",
      "language                  float64\n",
      "name                      object\n",
      "isrc                      object\n",
      "city                      int64\n",
      "bd                        int64\n",
      "gender                    object\n",
      "registered_via            int64\n",
      "registration_init_time    datetime64[ns]\n",
      "expiration_date           datetime64[ns]\n",
      "dtypes: category(2), datetime64[ns](2), float64(2), int64(4), object(10)\n",
      "memory usage: 650.5+ MB\n",
      "None\n"
     ]
    }
   ],
   "source": [
    "#年龄大于100的样本\n",
    "print('年领大于100的样本有多少：',len(df_train.query('bd>100')))#6508\n",
    "#从年龄小于0 和大于100的数量来看，所占比例较小，因此删除年龄小于0，大于100的样本\n",
    "df_train=df_train.query('bd >0 and bd <=80')\n",
    "\n",
    "#查看训练集总体情况\n",
    "print(df_train.info())\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
